home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Oh!X 2001 Spring
/
Oh!X 2001 Spring Special CD-ROM (Japan).7z
/
Oh!X 2001 Spring Special CD-ROM (Japan) (Track 1).bin
/
CGI
/
list1.cgi
next >
Wrap
Text File
|
2000-10-28
|
2KB
|
93 lines
#!/usr/local/bin/perl
require "cgi-lib.pl";
#---------------------------------------
#REFERER LOGGER - その1(CGI版)
# by de. 2000
#---------------------------------------
my $referer; #REFERER文字列が入る変数
my @queue;#URL20個の配列
my $myself="http://web.pe.to/~deyamato"; #省くアドレス
my $logfilename="refererlog.dat";
#画像を表示
open(GIF,"./banner.gif");
@gifdata = stat("./banner.gif");
$byte = $gifdata[7];
print "Content-type: image/gif\n";
print "Content-length: $byte\n\n";
print <GIF>;
close(GIF);
#QUERY文字列からハッシュを作る
&ReadParse(*input);
@val = split(/&/,$input);
foreach $i(0 .. $#val){
$val[$i] =~ s/%(..)/pack("c",hex($1))/ge;
($name,$value) = split(/=/,$val[$i],2);
$value =~ s/\+/ /g;
$val{$name} = $value;
}
if($ENV{HTTP_REFERER} ne ""){
$referer = $ENV{HTTP_REFERER};
}
if($referer =~ /^http:\/\//){
if(!($referer =~ /$myself/)){
Getlogfile($referer);
}
}
#終わり処理
close(ERRLOG);
exit(0);
sub Getlogfile{
($current_url)=@_; #現在のアクセス元URL
my $last_url; #過去の中で最新のURL
my $date,count;
my $count=0;
open(LOG,$logfilename)|| print ERRLOG "LOGFILE READ ERROR\n";
while(<LOG>){
chop;
&put_queue($_);
$last_url=$_;
}
close LOG;
#--ログのURLをチェック
if($current_url ne $last_url){
&put_queue($current_url);
}
#-- ログファイルにかき出す
open(LOG,">$logfilename")|| print ERRLOG "LOGFILE WRITE ERROR\n";
for($i=20;$i>=0;--$i){
if($queue[$i] ne ""){
#もし、重複するURLは記録しないならコメントをはずす
#if($queue[$i] ne $current_url){
print LOG "$queue[$i]\n";
#}
}
}
close(LOG);
}
sub put_queue{
#print " ** put_queue!! **\n";
for($i=20;$i>0;$i=$i-1){
$j=$i-1;
#print "queue$j($queue[$j]) => queue$i($queue[$i])\n";
$queue[$i]=$queue[$i-1];
}
$queue[0]=$_[0];
}